package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComboBox;

import main.Controller;

import backend.ZauberVariante;

/**
 * 
 * @author Christian
 * @since 0.15d
 */
public class EditZauberVariantenController implements ActionListener {
	
	/**
	 * 
	 */
	private EditZauberVariante editPanel = null;
	
	/**
	 * @param editPanel
	 *            Das Panel zum Controller
	 */
	public EditZauberVariantenController(EditZauberVariante editPanel) {

		this.editPanel = editPanel;
	}
	
	/**
	 * @param e
	 *            Event
	 */
	@Override
	public void actionPerformed(ActionEvent e) {

		JButton button = (JButton) e.getSource();
		if (button.getText().equals("speichern")) {
			JComboBox comboBox = editPanel.getJVariantenAuswahlComboBox();
			if (comboBox.getItemCount() > 0) {
				ZauberVariante vari = (ZauberVariante) comboBox.getSelectedItem();
				vari.setAnmerkung(editPanel.getJAnmerkungTextArea().getText());
				vari.setKommentar(editPanel.getJKommentarTextArea().getText());
				vari.setKosten(editPanel.getJKostenTextArea().getText());
				vari.setWirkungsDauer(editPanel.getJWirkungsDauerTextArea().getText());
				vari.setZauberDauer(editPanel.getJZauberDauerTextArea().getText());
				editPanel.getJInfoLabel().setText("Gespeichert!");
			}
		} else if (button.getText().equals("-")) {
			JComboBox comboBox = editPanel.getJVariantenAuswahlComboBox();
			if (comboBox.getItemCount() > 0) {
				ZauberVariante vari = (ZauberVariante) comboBox.getSelectedItem();
				comboBox.removeItem(vari);
				Controller.getDatenController().removeZauberVariante(vari);
			}
			fillComboBox();
		}
	}
	
	/**
	 * Setzt die Felder inaktive, wenn false übergeben wurde, bei true werden die Felder auch
	 * aktualisiert.
	 * 
	 * @param aktive Bool
	 */
	public void update(boolean aktive) {

		editPanel.getJAnmerkungTextArea().setEnabled(aktive);
		editPanel.getJKommentarTextArea().setEnabled(aktive);
		editPanel.getJKostenTextArea().setEnabled(aktive);
		editPanel.getJZauberDauerTextArea().setEnabled(aktive);
		editPanel.getJWirkungsDauerTextArea().setEnabled(aktive);
		editPanel.getJReichweiteTextArea().setEnabled(aktive);
		editPanel.getJDelButton().setEnabled(aktive);
		JComboBox comboBox = editPanel.getJVariantenAuswahlComboBox();
		ZauberVariante vari = (ZauberVariante) comboBox.getSelectedItem();
		if (aktive && vari != null) {
			editPanel.getJAnmerkungTextArea().setText(vari.getAnmerkung());
			editPanel.getJKommentarTextArea().setText(vari.getKommentar());
			editPanel.getJKostenTextArea().setText(vari.getKosten());
			editPanel.getJZauberDauerTextArea().setText(vari.getZauberDauer());
			editPanel.getJWirkungsDauerTextArea().setText(vari.getWirkungsDauer());
			editPanel.getJInfoLabel().setText(" ");
		}
	}
	
	/**
	 * Fügt die Varianten in die Combobox ein
	 */
	public void fillComboBox() {

		ArrayList<ZauberVariante> list = Controller.getDatenController().getVariantenByZauberName(
				(String) editPanel.getJZauberNameComboBox().getSelectedItem(),
				(String) editPanel.getJRepComboBox().getSelectedItem());
		JComboBox comboBox = editPanel.getJVariantenAuswahlComboBox();
		if (list.size() > 0) {
			comboBox.setEnabled(true);
			comboBox.removeAllItems();
			for (ZauberVariante variante : list) {
				comboBox.addItem(variante);
			}
			comboBox.setSelectedIndex(0);
			update(true);
		} else {
			update(false);
			comboBox.setEnabled(false);
		}
	}
}
